## Phase 1 잔여물 정리
- shared/ui/icons/ 생성 (10개) — cross-layer deps 해소 (@/components/icons/ → @/shared/ui/icons/)
- shared/ui/index.ts 생성 — barrel export (import { Button } from '@/shared/ui' 가능)
- jest-axe 전체 적용 (25개 파일) — WCAG 위반 13개 발견 및 수정
- Select nested-interactive 제거, CommentInput 버튼 aria-label, TextareaField tabIndex
- CheckingModal/NoticeModal/ResultModal labelId 연결
- BottomSheetModal aria-label prop 지원
## shared/api 구성
- shared/api/axiosInstance.ts — axios 인스턴스 + token refresh interceptor
- shared/api/handleApiResponse.ts — ApiResponse 인터페이스 + 응답 처리
- console.log 9개 제거 (CLAUDE.md 규칙)
- src/api/index.ts → re-export 래퍼로 교체 (17개 도메인 파일 변경 없음)
## shared/types 구성
- shared/types/error.ts — RequestErrorType
- src/model/error.ts → re-export 래퍼로 교체
## entities 레이어 구축 (16개 도메인)
- contact, notification, bookmark, report, translation, requestedTrip
- enrollment, comment, myTrip, search
- user (auth.ts + profile.ts 통합), userProfile, trip (home.ts 병합)
- tripDetail, community, myPage
- 각 domain: model.ts + api.ts + index.ts
- src/model/*.ts, src/api/*.ts → re-export 래퍼로 교체 (하위 호환)
## 레이어 위반 해소
- Filters 타입: hooks/search/useSearch → entities/search/model
- IListParams 타입: hooks/useCommunity → entities/community/model
테스트: 134개 → 159개 (전부 통과)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
FSD(Feature-Sliced Design) 리팩토링 Phase 1 ~ Phase 2 완료.
Phase 1: shared 레이어 구축
components/designSystem/→shared/ui/이전 (31개 컴포넌트)Phase 1.5: 웹 접근성 보강
jest-axe도입, WCAG 위반 수정Phase 1 잔여물 정리
shared/ui/icons/생성 → cross-layer 의존성 10개 해소shared/ui/index.ts생성 → barrel export 구성jest-axe전체 적용 (25개 파일) → WCAG 위반 13개 추가 발견·수정Phase 2: entities 레이어 구축
shared/api/구성 (axiosInstance, handleApiResponse) —console.log9개 제거shared/types/구성 (RequestErrorType)model/+api/→entities/{domain}/이전 (16개 도메인)Test plan
npx vitest run→ 27 files, 159 tests 전부 통과 확인수치
🤖 Generated with Claude Code